<!DOCTYPE html>
<html>
<head>
    <meta charset="UTF-8">
    <title></title>
    <style type="text/css">
        #box1 {
            width: 100px;
            height: 100px;
            background-color: red;
            /*
             * 开启box1的绝对定位
             */
            position: absolute;
        }

    </style>

    <script type="text/javascript">
        /**
         * 实践案例-div跟随鼠标移动
         * 技术点：鼠标移动事件对象、事件对象属性、事件对象兼容性、获取滚动条滚动的距离
         */
        window.onload = function () {

            //获取box1容器
            var box1 = document.getElementById("box1");
            //document绑定鼠标移动事件
            document.onmousemove = function (event) {

                //解决兼容问题
                event = event || window.event;

                //获取滚动条滚动的距离
                /*
                 * chrome认为浏览器的滚动条是body的，可以通过body.scrollTop来获取
                 * 火狐等浏览器认为浏览器的滚动条是html的，
                 */
                var st = document.body.scrollTop || document.documentElement.scrollTop;
                var sl = document.body.scrollLeft || document.documentElement.scrollLeft;
                //var st = document.documentElement.scrollTop;


                //获取到鼠标的坐标
                /*
                 * 注意：clientX和clientY
                 * 用于获取鼠标在当前的可见窗口的坐标
                 * div的偏移量，是相对于整个页面的
                 *
                 * 优化：pageX和pageY可以获取鼠标相对于当前页面的坐标
                 * 但是这个两个属性在IE8中不支持，所以如果需要兼容IE8，则不要使用
                 */
                var left = event.clientX;
                var top = event.clientY;

                //设置box1容器的偏移量
                box1.style.left = left + sl + "px";
                box1.style.top = top + st + "px";

            };
        };
    </script>
</head>
<body style="height: 1000px;width: 2000px;">
<div id="box1"></div>
</body>
</html>
